// 给两个整数数组 nums1 和 nums2 ,
// 返回 两个数组中 公共的 、长度最长的子数组的长度 。

// 输入：nums1 = [1, 2, 3, 2, 1], nums2 = [3, 2, 1, 4, 7]
// 输出：3
// 解释：长度最长的公共子数组是[3, 2, 1] 。

// 注意：为什么不相等的时候dp[i][j] = 0  
// ———— 因为如果不为零，那么继续往后的判断则无意义，是错误的，因为不相等，所以不能算作子数组的一部分


/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
var findLength = function (nums1, nums2) {
    const m = nums1.length;
    const n = nums2.length;
    let dp = new Array(m + 1).fill(0).map(() => new Array(n + 1).fill(0));
    dp[0][0] = 0;
    let res = 0;
    for (let i = 1; i <= m; i++) {
        for (let j = 1; j <= n; j++) {
            if (nums1[i - 1] === nums2[j - 1])
                dp[i][j] = dp[i - 1][j - 1] + 1;
            res = Math.max(res, dp[i][j])
        }
    }
    return res;
};
